import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:openim_common/openim_common.dart';

import 'chat_setup_logic.dart';

class ChatSetupPage extends StatelessWidget {
  final logic = Get.find<ChatSetupLogic>();

  ChatSetupPage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: TitleBar.back(),
      backgroundColor: Styles.c_F8F9FA,
      body: SingleChildScrollView(
        child: Obx(() => Column(
              children: [
                _buildBaseInfoView(),
                10.verticalSpace,
                _buildSearchSection(),
                10.verticalSpace,
                _buildChatSettingsSection(),
                10.verticalSpace,
                // _buildNotificationSection(),
                // 10.verticalSpace,
                // _buildBackgroundSection(),
                // 10.verticalSpace,
                _buildClearHistorySection(),
                10.verticalSpace,
                _buildComplaintSection(),
                40.verticalSpace,
              ],
            )),
      ),
    );
  }

  Widget _buildBaseInfoView() => Container(
        margin: EdgeInsets.symmetric(horizontal: 10.w, vertical: 10.h),
        padding: EdgeInsets.symmetric(horizontal: 8.w, vertical: 10.h),
        decoration: BoxDecoration(
          color: Styles.c_FFFFFF,
          borderRadius: BorderRadius.circular(6.r),
        ),
        child: Row(
          children: [
            GestureDetector(
              behavior: HitTestBehavior.translucent,
              onTap: logic.viewUserInfo,
              child: SizedBox(
                width: 60.w,
                child: Column(
                  children: [
                    logic.domainFaceURL.value.isNotEmpty
                        ? AvatarView(
                            width: 44.w,
                            height: 44.h,
                            text: logic.conversationInfo.value.showName,
                            url: logic.domainFaceURL.value,
                            enabledPreview: false,
                          )
                        : SizedBox(
                            width: 44.w,
                            height: 44.h,
                          ),
                    8.verticalSpace,
                    (logic.conversationInfo.value.showName ?? '').toText
                      ..style = Styles.ts_8E9AB0_14sp
                      ..maxLines = 1
                      ..overflow = TextOverflow.ellipsis,
                  ],
                ),
              ),
            ),
            SizedBox(
              width: 60.w,
              child: Column(
                children: [
                  ImageRes.addFriendTobeGroup.toImage
                    ..width = 44.w
                    ..height = 44.h
                    ..onTap = logic.createGroup,
                  8.verticalSpace,
                  '发起群聊'.toText
                    ..style = Styles.ts_8E9AB0_14sp
                    ..maxLines = 1
                    ..overflow = TextOverflow.ellipsis,
                ],
              ),
            ),
          ],
        ),
      );

  // 查找聊天记录区域
  Widget _buildSearchSection() => _buildItemView(
    text: '查找聊天记录',
    showRightArrow: true,
    isTopRadius: true,
    isBottomRadius: true,
    onTap: logic.searchChatHistory,
  );

  // 聊天设置区域（消息免打扰、置顶聊天）
  Widget _buildChatSettingsSection() => Column(
    children: [
      _buildItemView(
        text: '消息免打扰',
        showSwitchButton: true,
        switchOn: logic.isNotDisturb,
        isTopRadius: true,
        onChanged: (value) => logic.toggleNotDisturb(),
      ),
      Container(
        height: 1.h,
        color: Styles.c_E8EAEF,
        margin: EdgeInsets.only(left: 26.w),
      ),
      _buildItemView(
        text: '置顶聊天',
        showSwitchButton: true,
        switchOn: logic.isPinned,
        isBottomRadius: true,
        onChanged: (value) => logic.toggleTopConversation(),
      ),
    ],
  );

  // 提醒设置区域
  Widget _buildNotificationSection() => _buildItemView(
    text: '提醒',
    showRightArrow: true,
    isTopRadius: true,
    isBottomRadius: true,
    onTap: logic.openNotificationSettings,
  );

  // 聊天背景设置区域
  Widget _buildBackgroundSection() => _buildItemView(
    text: '设置当前聊天背景',
    showRightArrow: true,
    isTopRadius: true,
    isBottomRadius: true,
    onTap: logic.setChatBackground,
  );

  // 清空聊天记录区域
  Widget _buildClearHistorySection() => _buildItemView(
    text: '清空聊天记录',
    showRightArrow: false,
    isTopRadius: true,
    isBottomRadius: true,
    onTap: logic.clearChatHistory,
  );

  // 投诉区域
  Widget _buildComplaintSection() => _buildItemView(
    text: '投诉',
    textStyle: Styles.ts_FF381F_17sp,
    showRightArrow: true,
    isTopRadius: true,
    isBottomRadius: true,
    onTap: logic.reportUser,
  );

  Widget _buildItemView({
    required String text,
    String? hintText,
    TextStyle? textStyle,
    String? value,
    bool switchOn = false,
    bool isTopRadius = false,
    bool isBottomRadius = false,
    bool showRightArrow = false,
    bool showSwitchButton = false,
    ValueChanged<bool>? onChanged,
    Function()? onTap,
  }) =>
      GestureDetector(
        onTap: onTap,
        behavior: HitTestBehavior.translucent,
        child: Container(
          height: hintText == null ? 46.h : 68.h,
          margin: EdgeInsets.symmetric(horizontal: 10.w),
          padding: EdgeInsets.symmetric(horizontal: 16.w),
          decoration: BoxDecoration(
            color: Styles.c_FFFFFF,
            borderRadius: BorderRadius.only(
              topRight: Radius.circular(isTopRadius ? 6.r : 0),
              topLeft: Radius.circular(isTopRadius ? 6.r : 0),
              bottomLeft: Radius.circular(isBottomRadius ? 6.r : 0),
              bottomRight: Radius.circular(isBottomRadius ? 6.r : 0),
            ),
          ),
          child: Row(
            children: [
              null != hintText
                  ? Column(
                      mainAxisAlignment: MainAxisAlignment.center,
                      crossAxisAlignment: CrossAxisAlignment.start,
                      children: [
                        text.toText..style = textStyle ?? Styles.ts_0C1C33_17sp,
                        hintText.toText..style = Styles.ts_8E9AB0_14sp,
                      ],
                    )
                  : (text.toText..style = textStyle ?? Styles.ts_0C1C33_17sp),
              const Spacer(),
              if (null != value) value.toText..style = Styles.ts_8E9AB0_14sp,
              if (showSwitchButton)
                CupertinoSwitch(
                  value: switchOn,
                  activeColor: Styles.c_FFB300,
                  onChanged: onChanged,
                ),
              if (showRightArrow)
                ImageRes.rightArrow.toImage
                  ..width = 24.w
                  ..height = 24.h,
            ],
          ),
        ),
      );
}